package com.nulldev.util.web.HttpServer3.extensions.websocket.util;

import java.util.Arrays;
import java.util.List;

import com.nulldev.util.data.Variables;
import com.nulldev.util.data.Arrays.arrays.FastLists;

public class SubArrayCollection {
	private byte[] array = new byte[0];
	final List<SubArray> subArrays = FastLists.list();

	public class SubArray {
		private int startIndex;
		private int length;

		private SubArray(int startIndex, int length) {
			this.startIndex = startIndex;
			this.length = length;
		}

		public byte[] getSubArray() {
			return Arrays.copyOfRange(array, startIndex, startIndex + length);
		}
	}

	public SubArrayCollection(byte[] array, int lengthOfSubArray) {
		this.array = Variables.checkNotNull(array);
		if (lengthOfSubArray <= 0)
			throw new RuntimeException("invalid lengthOfSubArray");
		int length = array.length;
		int index = 0;
		while (length > lengthOfSubArray) {
			subArrays.add(new SubArray(index, lengthOfSubArray));
			length -= lengthOfSubArray;
			index += lengthOfSubArray;
		}
		subArrays.add(new SubArray(index, length));
	}

	public List<SubArray> getSubArrays() {
		return subArrays;
	}
}